
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE procedure [dbo].[SP_TCMOVI_BANC_D07]
/*-------------------------------------------------------*/      
/*---Empresa              : OFISIS S.A.                --*/      
/*---Cliente              : OFISIS      --*/      
/*---Sistema              : Tesoreria                  --*/      
/*---Mödulo               : Empresa                    --*/      
/*---Programa             : Anulaci÷n (Todo Comprobante--*/      
/*---                       Movimiento Bancos          --*/      
/*---                       (Ingresos)                 --*/        
/*---Script               : tcmovi_b.sql               --*/      
/*---Nombre SP            : SP_TCMOVI_BANC_D07         --*/      
/*---Desarrollado por     : Javier Flores A.           --*/      
/*---Fecha Creaciön       : 04/07/1999                 --*/      
/*---Base Datos           : Microsoft Sql Server       --*/      
/*---Versiön              : 7.0                        --*/      
/*---Invoca a SP          :                            --*/      
/*-------------------------------------------------------*/      
/*-------------------------------------------------------*/        
/*---Modificado 1 por     : Reynaldo Menacho           --*/        
/*---Fecha Modificaciön   : 22/04/2005                 --*/         
/*---Detalle Modificaciön : Busqueda del estado actual o anterior    --*/        
/*---      de los documentos             --*/       
/*-------------------------------------------------------*/        
/*-------------------------------------------------------*/        
/*---ModIficado 2 por     :Maribel Julca Rodriguez     --*/        
/*---Fecha ModIficaci,n   :22/01/2005                  --*/         
/*---Detalle ModIficaci,n :ingreso de campos CO_USUA_CREA, CO_USUA_MODI --*/        
/*-------------------------------------------------------*/    
/*---------------------------------------------------------*/      
/*---Modificado 3 por     : Carlos Marquez Escobar       --*/      
/*---Fecha Modificaci÷n   : 16/03/2010                   --*/      
/*---Detalle Modificaci÷n : Logica de Periodo EXTORNO  --*/      
/*---------------------------------------------------------*/     
/*-------------------------------------------------------*/        
/*---Comentarios                                       --*/        
/*---                                                  --*/        
/*---                                                  --*/        
/*-------------------------------------------------------*/        
        
/*-------------------------------------------------------*/        
/*---Drop Proc SP_TCMOVI_BANC_D07                      --*/        
/*---Grant all on SP_TCMOVI_BANC_D07 to public         --*/         
/*---SP_TCMOVI_BANC_D07                                --*/        
/*-------------------------------------------------------*/        
 @ISCO_EMPR   TD_VC_002,         
 @ISCO_USUA_MODI  TD_VC_008_USUA,        
 @ISCO_BANC   TD_VC_003,         
 @ISNU_CNTA_BANC  TD_VC_020,        
 @ISAA_BNCO   TD_VC_004,         
 @ISMM_BNCO   TD_VC_002,         
 @ISTI_MOVI_BANC  TD_VC_001,          
 @ISNU_COMP_BANC  TD_VC_008,         
 @INIM_MOVI   TD_NU_016_004,        
 @ISCO_TIPO_OPER  TD_VC_003,        
 @IDFE_ANUL   TD_DT_001,        
 @ISDE_OBSE   TD_VC_100,         
 @ISNU_SOLI   TD_VC_020,    
 @ISCO_UNID_CNTB TD_VC_003    
As    
Declare             
    @VNIM_MOVI_ANTE TD_NU_016_004,          
    @OSTI_DOCU      TD_VC_003,         
    @CSTI_DOCU_ENTI TD_VC_003,         
    @CSNU_DOCU_ENTI TD_VC_020,          
    @CNIM_CONV_DOCU TD_NU_016_004,         
    @VSST_SIGN      TD_VC_001,        
    @CNIM_DETA      TD_NU_016_004,        
    @CSTI_ENTI      TD_VC_001,        
    @CSCO_ENTI      TD_VC_020, @CSST_CIER_DOCU TD_VC_001,      
    @VSCO_ESTA_LETR TD_VC_003,         
    @VNNU_SECU      TD_IN_001,        
    @VSST_GEAS_ANUL TD_VC_001,        
    @VSCO_TIPO_OPE1 TD_VC_003, @VNIM_CONV_DOCU TD_NU_016_004,      
    @CSCO_CNTA_EMPR TD_VC_020, @VSCO_ESTA_ANTE TD_VC_003,    
    
 /* a) Variables de extorno */    
 @VSCO_TIPO_EGAN TD_VC_003,     
    
 @VSCO_UNID_CONC TD_VC_003,    
 @VDFE_OPER  TD_DT_001,    
 @OSNU_ASTO  TD_VC_010,    
 @VSCO_TIPO_INAN TD_VC_003,    
 @VSST_INTE_BACH TD_VC_001,    
 @VSST_ASTO_RESU TD_VC_001,    
 @VSTI_OPNI_CARG TD_VC_001,    
 @VSTI_OPNI_ABON TD_VC_001,  
 @OSTI_DOCU_PERC  TD_VC_003  
    
        
    
 /* Devuelve el Tipo Documento */        
 Exec SP_TTDOCU_CNTB_Q01 6, @OSTI_DOCU OUTPUT         
 Exec SP_TTDOCU_CNTB_Q01 20, @OSTI_DOCU_PERC OUTPUT   
         
 Begin Tran SP_TCMOVI_BANC_D07        
    
    
 /**-----Verifica si es interface en Linea s/n y Estatus de Programaci½n de Pagos ------*/     
 SELECT @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL,    
   @VSST_INTE_BACH = ST_INTE_BACH,      
   @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER,    
   @VSCO_TIPO_EGAN = CO_TIPO_OPEG, @VSST_GEAS_ANUL = ST_GEAS_ANUL    
 FROM   TMPARA_TESO         
 WHERE  CO_EMPR = @ISCO_EMPR        
    
    
 Select @VDFE_OPER = FE_OPER,    
   @VSCO_UNID_CONC = CO_UNID_CONC    
 From   TCMOVI_BANC        
 Where  CO_EMPR = @ISCO_EMPR        
    And    CO_UNID_CONC = @ISCO_UNID_CNTB    
 And    CO_BANC = @ISCO_BANC        
 And    NU_CNTA_BANC = @ISNU_CNTA_BANC        
 And    AA_BNCO = @ISAA_BNCO        
 And    MM_BNCO = @ISMM_BNCO        
 And    TI_MOVI_BANC = @ISTI_MOVI_BANC        
 And    NU_COMP_BANC = @ISNU_COMP_BANC                  
    
        
     Declare CU_TCMOVI_BANC_D07_1 Cursor        
     For        
     Select TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, IM_CONV_DOCU, IM_DETA, RTRIM(ISNULL(CO_CNTA_EMPR, '')), ST_CIER_DOCU        
     From   TDMOVI_BANC        
     Where  CO_EMPR = @ISCO_EMPR        
     And    CO_UNID_CONC = @ISCO_UNID_CNTB    
     And    CO_BANC = @ISCO_BANC        
     And    NU_CNTA_BANC = @ISNU_CNTA_BANC        
     And    AA_BNCO = @ISAA_BNCO        
     And    MM_BNCO = @ISMM_BNCO        
     And    TI_MOVI_BANC = @ISTI_MOVI_BANC        
     And    NU_COMP_BANC = @ISNU_COMP_BANC                  
        
     Open  CU_TCMOVI_BANC_D07_1        
     Fetch CU_TCMOVI_BANC_D07_1 into @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @CNIM_CONV_DOCU,         
                                     @CNIM_DETA, @CSCO_CNTA_EMPR, @CSST_CIER_DOCU      
        
   While (@@FETCH_STATUS = 0)        
   Begin        
  If (@@FETCH_STATUS < 0)        
    Begin        
  RAISERROR 20001 'FIN DE ARCHIVO'        
  Close CU_TCMOVI_BANC_D07_1        
  Deallocate CU_TCMOVI_BANC_D07_1        
  Rollback Tran SP_TCMOVI_BANC_D07        
  Return        
    End        
        
   If @CSCO_CNTA_EMPR = ''      
   Begin      
    -- Seteo de variable para el procedure que actualiza el documento      
    Select @VNIM_CONV_DOCU = @CNIM_CONV_DOCU * -1      
       
   -- Se busca el estado anterior del documento      
   Exec SP_TTESTA_ORIG_Q01 @ISCO_EMPR, @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @VSCO_ESTA_ANTE output      
     /* Para Comprobantes de Percepcion */       
     If @CSTI_ENTI = 'C' And @CSTI_DOCU_ENTI = @OSTI_DOCU_PERC And       
        Exists ( Select NU_COMP_PERC From TCCOMP_PERC Where CO_EMPR = @ISCO_EMPR And NU_COMP_PERC = @CSNU_DOCU_ENTI )      
       Begin      
         Exec SP_TCPERC_ANUL_D02 @ISCO_EMPR, @ISCO_USUA_MODI, @CSCO_ENTI, @CSNU_DOCU_ENTI, @ISCO_BANC, @ISNU_CNTA_BANC, null,@ISAA_BNCO,@ISMM_BNCO,@ISNU_COMP_BANC  
           
     If @@error <> 0      
   Begin      
      Close CU_TCMOVI_BANC_D07_1      
     Deallocate CU_TCMOVI_BANC_D07_1      
     Rollback tran SP_TCMOVI_BANC_D07      
     Return      
   End      
     End    
     Else      
      Begin    
   --Se actualiza el documento y se graba en tabla de kardex de estados de documentos      
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI,       
   @VNIM_CONV_DOCU, @VSCO_ESTA_ANTE, @ISCO_USUA_MODI, @CSST_CIER_DOCU      
          
   If @@error <> 0      
   Begin       
    Close CU_TCMOVI_BANC_D07_1      
    Deallocate CU_TCMOVI_BANC_D07_1      
    Rollback tran SP_TCMOVI_BANC_D07      
    Return        
   End          
  End   
   End      
        
          Fetch CU_TCMOVI_BANC_D07_1 into @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @CNIM_CONV_DOCU,         
                                          @CNIM_DETA, @CSCO_CNTA_EMPR, @CSST_CIER_DOCU        
        
      End        
        
      Close CU_TCMOVI_BANC_D07_1        
      Deallocate CU_TCMOVI_BANC_D07_1        
        
      SELECT @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL        
      FROM   TMPARA_TESO         
      WHERE  CO_EMPR = @ISCO_EMPR        
        
      If @VSST_GEAS_ANUL = 'N'        
         Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_INAN        
      Else            
        Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER        
    
 --If  @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL ) -- Logica EXTORNO sustituida     
 If  (Year(@VDFE_OPER) * 100 + Month(@VDFE_OPER)) < (Year(@IDFE_ANUL) * 100 + Month(@IDFE_ANUL))     
    
  Update  TCMOVI_BANC        
  Set     TI_SITU = 'EXT',         
    CO_TIPO_OPER = @VSCO_TIPO_OPE1,        
    DE_OBSE = @ISDE_OBSE,        
    CO_USUA_MODI = @ISCO_USUA_MODI,        
    FE_USUA_MODI = GETDATE()        
       Where   CO_EMPR = @ISCO_EMPR          
          And     CO_UNID_CONC = @ISCO_UNID_CNTB    
       And     CO_BANC = @ISCO_BANC        
       And     NU_CNTA_BANC = @ISNU_CNTA_BANC         
       And     AA_BNCO = @ISAA_BNCO        
       And     MM_BNCO = @ISMM_BNCO        
       And     TI_MOVI_BANC = @ISTI_MOVI_BANC         
       And     NU_COMP_BANC = @ISNU_COMP_BANC         
    
    
 Else        
   Update  TCMOVI_BANC        
   Set     TI_SITU = 'ANU',         
     CO_TIPO_OPER = @VSCO_TIPO_OPE1,        
     DE_OBSE = @ISDE_OBSE,        
     CO_USUA_MODI = @ISCO_USUA_MODI,        
     FE_USUA_MODI = GETDATE()        
   Where   CO_EMPR = @ISCO_EMPR          
            And     CO_UNID_CONC = @ISCO_UNID_CNTB    
   And     CO_BANC = @ISCO_BANC        
   And     NU_CNTA_BANC = @ISNU_CNTA_BANC         
   And     AA_BNCO = @ISAA_BNCO        
   And     MM_BNCO = @ISMM_BNCO        
   And     TI_MOVI_BANC = @ISTI_MOVI_BANC         
   And     NU_COMP_BANC = @ISNU_COMP_BANC         
        
      If @@error <> 0        
         Begin        
           Rollback Tran SP_TCMOVI_BANC_D07        
           Return        
         End        
        
 /**-----Verifica si se genera asientos Resumidos ------*/     
 Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))          
 From   TMOPRC_RESU t1 , TDTIPO_OPER t2          
 Where  t2.CO_EMPR = @ISCO_EMPR And          
 t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And          
 t1.CO_EMPR = t2.CO_EMPR And          
 t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB       
    
 /**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/     
    If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND     
  @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And    
    (Year(@VDFE_OPER) * 100 + Month(@VDFE_OPER)) < (Year(@IDFE_ANUL) * 100 + Month(@IDFE_ANUL))  -- Logica EXTORNO Cambiada     
 Begin    
       
  /*-----Optiene el Numero de Asiento -----*/        
  EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @VSCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT      
  IF (@@ERROR != 0)          
  Begin      
   RollBack Tran  SP_TTAMAR_NCCA_D01    
   Return      
  End      
    
 End      
    
       
      Insert into TTBANC_ANUL (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC,         
      CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC)        
      Values (@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC, @ISNU_COMP_BANC,         
              @VSCO_TIPO_OPE1,  @IDFE_ANUL, @OSNU_ASTO, 'N', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(),       @ISCO_UNID_CNTB)        
        
      If @@error <> 0        
         Begin        
   Rollback Tran SP_TCMOVI_BANC_D07        
   Return        
         End        
        
commit Tran SP_TCMOVI_BANC_D07        
/*------------------------ Fin ------------------------------*/
GO
